//
//  HeaderBackgroundView.m
//  TarPhone
//
//  Created by Christopher Anderson on 23/03/2009.
//  Copyright 2009 __MyCompanyName__. All rights reserved.
//

#import "HeaderBackgroundView.h"


@implementation HeaderBackgroundView

@synthesize indent;
@synthesize foregroundColor;
@synthesize image;

- (id)initWithFrame:(CGRect)frame indent:(NSInteger)value image:(UIImage*)inImage
{
	if (self = [super initWithFrame:frame]) 
	{
		self.backgroundColor = [UIColor clearColor];
		indent = value;
		self.image = inImage;
	}
	return self;
}

- (id)initWithFrame:(CGRect)frame 
{
	if (self = [super initWithFrame:frame]) {
		self.backgroundColor = [UIColor clearColor];
		self.foregroundColor = nil;
		indent = 0;
	}
	return self;
}

- (void)drawRect:(CGRect)rect 
{
	// Drawing code
	CGContextRef context = UIGraphicsGetCurrentContext();
	
	if(self.foregroundColor == nil)
	{
		CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);	
	}
	else
	{
		[self.foregroundColor setFill];
	}
	
	CGContextSetRGBStrokeColor(context, 0.67, 0.67, .67, 1.0);
	
	CGRect rrect = self.bounds;
	
	if (image != nil) {
		rrect.size.width = ( rrect.size.height / image.size.height ) * image.size.width;
	} else {
		rrect.size.width -= (rrect.size.width/2) + 40; 
	}
	
	rrect.origin.x = (self.bounds.size.width - rrect.size.width) / 2; 
	
	CGFloat r= 15;
	
	// NOTE: At this point you may want to verify that your radius is no more than half
	// the width and height of your rectangle, as this technique degenerates for those cases.
	
	// In order to draw a rounded rectangle, we will take advantage of the fact that
	// CGContextAddArcToPoint will draw straight lines past the start and end of the arc
	// in order to create the path from the current position and the destination position.
	
	// In order to create the 4 arcs correctly, we need to know the min, mid and max positions
	// on the x and y lengths of the given rectangle.
	CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
	CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
	
	// Next, we will go around the rectangle in the order given by the figure below.
	//       minx    midx    maxx
	// miny    2       3       4
	// midy   1 9              5
	// maxy    8       7       6
	// Which gives us a coincident start and end point, which is incidental to this technique, but still doesn't
	// form a closed path, so we still need to close the path to connect the ends correctly.
	// Thus we start by moving to point 1, then adding arcs through each pair of points that follows.
	// You could use a similar tecgnique to create any shape with rounded corners.
	
	
	
	// Start at 1
	CGContextMoveToPoint(context, minx, midy);
	// Add an arc through 2 to 3
	CGContextAddArcToPoint(context, minx, miny, midx, miny, r);
	// Add an arc through 4 to 5
	CGContextAddArcToPoint(context, maxx, miny, maxx, midy, r);
	// Add an arc through 6 to 7
	CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, r);
	// Add an arc through 8 to 9
	CGContextAddArcToPoint(context, minx, maxy, minx, midy, r);
	// Close the path
	
	CGContextClosePath(context);
	
	if (image != nil) {
		CGContextClip(context);
		[ image drawInRect: rrect ];
	} 
	
	// Fill & stroke the path
	CGContextDrawPath(context, kCGPathFillStroke);
}





- (void)dealloc 
{
	[super dealloc];
}

@end